package pe.com.nextel.localizacion;

import java.util.List;

import pe.com.nextel.bean.TransaccionDTO;
import pe.com.nextel.bean.UsuarioDTO;
import pe.com.nextel.dao.iface.UsuarioDAO;
import pe.com.nextel.util.ServicioLocalizacionConnectionUtil;
import pe.com.nextel.util.XMLUtil;

/**
 * Clase que implementa la localización para un Usuario
 * Los demás métodos no tendrán código porque esta clase no los implementa
 * @author DevosInc
 *
 */
public class LocalizacionUsuarioDAO implements UsuarioDAO {

	@Override
	public boolean modificar(UsuarioDTO usuario) {
		return false;
	}

	@Override
	public List<UsuarioDTO> listar(int idCuenta) {
		return null;
	}
	
	/**
	 * Método que obtendrá la posición de un usuario de acuerdo a su número
	 * @param UsuarioDTO que contiene la información del usuario para ser localizado
	 * @return PosicionDTO con la información de la posición del usuario enviado, podría contener el objeto ErrorDTO detallando si algo salió mal
	 */
	@Override
	public TransaccionDTO localizar(UsuarioDTO usuario) {
		String numero = usuario.getNumero();
//		String xmlResponse="13632978520341363297887284<?xml version=\"1.0\"?><!DOCTYPE svc_result SYSTEM \"MLP_SVC_RESULT_300.DTD\"><svc_result ver=\"3.0.0\"><slia ver=\"3.0.0\"><pos><msid type=\"MIN\">51998103033</msid><poserr><result resid=\"6\">POSITION METHOD FAILURE</result><add_info>Location server error: 163, The LFC Driver reported a position failure</add_info><time utc_off=\"+0000\">20130314215130</time></poserr></pos></slia></svc_result>";
		String xmlResponse=ServicioLocalizacionConnectionUtil.llamarAplicacionConexionLocalizacion(numero);

		if(xmlResponse.isEmpty()){
			return null;
		}
		String horaInicio = xmlResponse.substring(0,13);
		String horaFin = xmlResponse.substring(13,26);
		xmlResponse = xmlResponse.substring(26);
		TransaccionDTO transaccion = XMLUtil.readXMLLocalizationServer(xmlResponse);
		if(transaccion!=null){
			transaccion.setHoraInicio(horaInicio);
			transaccion.setHoraFin(horaFin);
		}
		return transaccion;
	}

	@Override
	public UsuarioDTO obtener(int idUsuario) {
		return null; // no se implementa en esta clase
	}

	@Override
	public List<UsuarioDTO> listarMonitoreados(int idMonitor) {
		return null; //No se implementa en esta clase
	}
	
	@Override
	public boolean asignarMonitoreados(int idMonitor, List<UsuarioDTO> monitoreados) {
		return false; // no se implementa en esta clase
	}


	@Override
	public UsuarioDTO autenticar(String numero) {
		return null; // no se implementa en esta clase
	}

	@Override
	public boolean perfil(UsuarioDTO usuario) {
		return false; //No se implementa en esta clase
	}

	@Override
	public String getOrigen(String numero) {
		return null;
	}


	@Override
	public Object actualizarTipo(String numero, String tipo) {
		return null;	//No se implementa
	}

	@Override
	public UsuarioDTO autenticarAdmin(String numero, String password) {
		return null; //No se implementa
	}

	@Override
	public String getTimestamp(String numero) {
		return null;
	}

	@Override
	public String getEtiqueta(String numero) {
		return null;
	}

}
